// const obj: object = { name: 'ifer', age: 18 }

// 通过字面量的方式描述对象的类型
// const obj: { name: string; age: number } = { name: 'ifer', age: 18 }

// !如果把对象提取出来给变量赋值，这个时候，对象只需要满足类型要求即可，数据可以比类型规定的多
/* const o = { name: 'ifer', age: 18, sex: '男' }
const obj: { name: string; age: number } = o */

// 可以配合类型别名来使用
/* type Person = { name: string; age: number }
const obj: Person = { name: 'ifer', age: 18 } */

// ?如何描述对象里面的方法，第一种方式，整体描述
/* const obj: { age: number; sum: (n1: number, n2: number) => number } = {
  age: 18,
  // sum(n1, n2) {},
  // 上面是下面的简写
  sum: function (n1, n2) {
    return n1 + n2
  },
} */
// 分别描述参数和返回值
/* const obj: { age: number; sum(n1: number, n2: number): number } = {
  age: 18,
  // sum(n1, n2) {},
  // 上面是下面的简写
  sum: function (n1, n2) {
    return n1 + n2
  },
} */

/* const obj: {
  // 可以换行，不需要分号隔开了
  age: number
  sum(n1: number, n2: number): number
} = {
  age: 18,
  // sum(n1, n2) {},
  // 上面是下面的简写
  sum: function (n1, n2) {
    return n1 + n2
  },
} */

// 下面写法也可以
// const str: { length: number } = 'hello'

export {}
